 /**
  ** 加法函数，用来得到精确的加法结果
  ** 说明：javascript的加法结果会有误差，在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
  ** 调用：accAdd(arg1,arg2)
  ** 返回值：arg1加上arg2的精确结果
  **/
 function accAdd(arg1, arg2) {
     let r1, r2, m, c;
     try {
         r1 = arg1.toString().split(".")[1].length;
     } catch (e) {
         r1 = 0;
     }
     try {
         r2 = arg2.toString().split(".")[1].length;
     } catch (e) {
         r2 = 0;
     }
     c = Math.abs(r1 - r2);
     m = Math.pow(10, Math.max(r1, r2));
     if (c > 0) {
         let cm = Math.pow(10, c);
         if (r1 > r2) {
             arg1 = Number(arg1.toString().replace(".", ""));
             arg2 = Number(arg2.toString().replace(".", "")) * cm;
         } else {
             arg1 = Number(arg1.toString().replace(".", "")) * cm;
             arg2 = Number(arg2.toString().replace(".", ""));
         }
     } else {
         arg1 = Number(arg1.toString().replace(".", ""));
         arg2 = Number(arg2.toString().replace(".", ""));
     }
     return (arg1 + arg2) / m;
 }

 //给Number类型增加一个add方法，调用起来更加方便。
 Number.prototype.add = function (arg) {
     return accAdd(arg, this);
 };

 //  console.log(0.1 + 0.2);

 //  console.log(accAdd(0.1, 0.2));
 //  console.log((1+2)/10);


 //  function numAdd(...nums) {
 //      let decimals=[];//小数
 //      let multiple=10;//倍数
 //     //  获取小数信息
 //      nums.forEach(item => {
 //          try {
 //              item += '';
 //              item.indexOf('.') >= 0 ? '' : item += '.0';
 //              decimals.push(item.substring(item.indexOf('.') + 1));
 //          } catch (e) {}
 //      });
 //      decimals.sort((a,b)=>{
 //         return b-a;
 //      });
 //      multiple=decimals[0].length;
 //      console.log(nums);
 //      console.log(multiple);
 //      nums.forEach(item=>{
 //          item*=Math.pow(10,multiple);
 //          console.log(item);
 //          console.log();
 //      })
 //  }
 //  numAdd(19948648699, 2.333, 3, 4.05454848648496, 5.0058489489498498489)

 function numAdd2(...nums) {
     let sum = 0;
     nums.forEach(item => {
         sum += item;
     });
     return sum;
 }

 function numAdd(...nums) {
     let sum = 0;
     nums.forEach(item => {
         item *= Math.pow(10, 10);
         sum += parseInt(item);
     });
     return sum / 1e10;
 }
 //  console.log('处理前：', numAdd2(199, 2.333, 3, 4.064849646, 5.08498489));
 //  console.log('处理后：', numAdd(199, 2.333, 3, 4.064849646, 5.08498489));

 //  console.log('处理前：', numAdd2(0.1, 0.2));
 //  console.log('处理后：', numAdd(0.1, 0.2));


 //  function numReducer2(...nums) {
 //      let sum = nums[0] * 2;
 //      nums.forEach(item => {
 //          sum -= item;
 //      });
 //      return sum;
 //  }

 //  function numReducer(...nums) {
 //      let sum = nums[0] * Math.pow(10, 10) * 2;
 //      nums.forEach(item => {
 //          item *= Math.pow(10, 10);
 //          sum -= parseInt(item); //parseInt主要是为了 如果小数超过了我们所乘的倍数那么就舍去一般不会超过
 //      });
 //      return sum / 1e10;
 //  }
 //  console.log('处理前：', numReducer2(199, 2.333, 3, 4.064849646, 5.08498489));
 //  console.log('处理后：', numReducer(199, 2.333, 3, 4.064849646, 5.08498489));






 let arr = ['1', '2', '3', '4', '5', '6', '7', '8'];

//  console.log('=============for-start============');
//  for (let index = 0; index < arr.length; index++) {
//      console.log(arr[index]);
//      if (arr[index] == 3) {
//          return arr[index];
//      }
//  }
//  console.log('=============for-end============\n\n');

console.log('=============forOf-start============');
for (const item of arr) {
    console.log(item);
     if (item == 3) {
         return item;
     }
}
console.log('=============forOf-end============\n\n');

 console.log('=============forEach-start============');
 let forEach = arr.forEach(item => {
     console.log(item);
     if (item == 3) {
         return item;
     }
 });
 console.log(forEach);
 console.log('=============forEach-end============\n\n');

 console.log('=============map-start============');
 let map = arr.map(item => {
     console.log(item);
     if (item == 3) {
         return item;
     }
 });
 console.log(map);
 console.log('=============map-end============');


 